package adb

import (
	"io"
	"net/http"
	"os"
	"runtime"

	"hjess.com/mirror/utils/file"
	"hjess.com/mirror/utils/glog"
	"hjess.com/mirror/values"
)

const (
	// 下载的ZIP名称
	ZIPName = "platform-tools.zip"
	// Windows版本PlatformTools
	PTWin = "https://dl.google.com/android/repository/platform-tools-latest-windows.zip"
	// Mac版本PlatformTools
	PTMac = "https://dl.google.com/android/repository/platform-tools-latest-darwin.zip"
	// Linux版本PlatformTools
	PTLinux = "https://dl.google.com/android/repository/platform-tools-latest-linux.zip"
)

// CheckEnv
func CheckEnv() bool {
	glog.Info(values.TextADBCheckStart)
	// 检查环境
	if file.Exist(file.PathInExePath("platform-tools")) {
		// 检查成功，跳出
		glog.Info(values.TextADBCheckSuccess)
		return true
	}
	// 开始下载
	if runtime.GOOS == "windows" {
		// 下载windows版本
		startDownload(PTWin)
	} else if runtime.GOOS == "linux" {
		// 下载Linux版本
		startDownload(PTLinux)
	} else if runtime.GOOS == "darwin" {
		// 下载Mac版本
		startDownload(PTMac)
	} else {
		// 非支持系统输出异常日志
		glog.Error(values.TextADBWrongPlatform)
		return false
	}
	return true
}

// startDownload 开始下载platformTools
func startDownload(url string, callback func) {
	// 输出下载日志
	glog.Info(values.TextADBDownload)
	// 尝试下载
	res, err := http.Get(url)
	// 输出报错日志
	if err != nil {
		glog.Error(err)
	}
	// 创建文件
	f, err := os.Create(ZIPName)
	// 输出报错日志
	if err != nil {
		glog.Error(err)
	}
	// 充填文件
	io.Copy(f, res.Body)
}
